package com.lonely.fx.spinner;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Scene;
import javafx.scene.control.Spinner;
import javafx.scene.control.SpinnerValueFactory;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

/**
 * @date: 2022-07-19 21:16
 * @author: ztkj-hzb
 * @description: 文本框(类似h5的数字框效果) --  基础用法
 **/
public class SpinnerWithIntegerSettingMain extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    /**
     *
     */
    @Override
    public void start(Stage primaryStage) throws Exception {

        HBox hBox = new HBox();

        //创建基于整形的文本框
        //最大100，最小1，初始值为10
        Spinner<Integer> integerSpinner = new Spinner<>(1, 100, 10);

        //设置是否可编辑，默认为false
        //integerSpinner.setEditable(true);

        //减1
        integerSpinner.decrement();
        //减5
        integerSpinner.decrement(5);

        //加1
        integerSpinner.increment();
        //加5
        integerSpinner.increment(5);

        //设置递增，递减按钮的样式
        integerSpinner.getStyleClass().add(Spinner.STYLE_CLASS_ARROWS_ON_RIGHT_HORIZONTAL);

        //针对于整形，设置相对的 value工厂,可重写 min，max，init，和递增数
        integerSpinner.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(30,70,50,10));

        //事件
        integerSpinner.valueProperty().addListener((observable, oldValue, newValue) -> System.out.println(newValue));


        hBox.getChildren().addAll(integerSpinner);
        primaryStage.setScene(new Scene(hBox));
        primaryStage.setWidth(600);
        primaryStage.setHeight(500);
        primaryStage.show();
    }
}
